

package modelo;

import proyecto2011.Archivo;

/**
 * Clase que representa un trigger en el esquema
 * @author  Jaime Painefilu - Juan Demo
 */
public class Trigger {
    String nombre;
    String momentoEjecucion;    
    String eventoEjecucion;
    String tipoEjecucion;
    String statement;

    public Trigger(String nombre, String momentoEjecucion,String eventoEjecucion,String tipoEjecucion,String statement) {
        this.nombre = nombre;
        this.momentoEjecucion = momentoEjecucion;
        this.eventoEjecucion = eventoEjecucion;
        this.tipoEjecucion = tipoEjecucion;
        this.statement = statement;
    }

    public String getMomentoEjecucion() {
        return momentoEjecucion;
    }

    public void setMomentoEjecucion(String momentoEjecucion) {
        this.momentoEjecucion = momentoEjecucion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getEventoEjecucion() {
            return eventoEjecucion;
    }

    public void setEventoEjecucion(String eventoEjecucion) {
            this.eventoEjecucion = eventoEjecucion;
    }

    public String getTipoEjecucion() {
            return tipoEjecucion;
    }

    public void setTipoEjecucion(String tipoEjecucion) {
            this.tipoEjecucion = tipoEjecucion;
    }

    public String getStatement() {
            return statement;
    }

    public void setStatement(String statement) {
            this.statement = statement;
    }

    @Override
    public String toString() {
            return "Trigger [eventoEjecucion=" + eventoEjecucion
                            + ", momentoEjecucion=" + momentoEjecucion + ", nombre="
                            + nombre + ", statement=" + statement + ", tipoEjecucion="
                            + tipoEjecucion + "]";
    }
    
    public void showTrigger(String nombreTabla, Archivo arch){
    	arch.escribirLinea("    + Trigger " + this.nombre);
        arch.escribirLinea(" "+this.momentoEjecucion);
        arch.escribirLinea(" "+this.eventoEjecucion);
        arch.escribirLinea(" on "+ nombreTabla);
        arch.escribirLinea("  for each "+ this.tipoEjecucion);
        arch.escribirLinea("\n         "+this.statement+"\n");
		
    }

    public void compararTrigger(Trigger trig, String nombreTabla, Archivo arch){
       if(!(this.momentoEjecucion.equals(trig.momentoEjecucion))|| !(this.eventoEjecucion.equals(trig.eventoEjecucion))|| !(this.tipoEjecucion.equals(trig.tipoEjecucion))||!(this.statement.equals(trig.statement))){
            System.out.println("        << ADVERTENCIA! >>  Trigers '"+this.nombre+"' difieren en: ");
            if(!(this.momentoEjecucion.equals(trig.momentoEjecucion))) System.out.println("     -Momento de ejecución");
            if(!(this.eventoEjecucion.equals(trig.eventoEjecucion)))System.out.println("        -Evento de ejecución");
            if(!(this.tipoEjecucion.equals(trig.tipoEjecucion)))System.out.println("        -Tipo de ejecución");
            if(!(this.statement.equals(trig.statement)))System.out.println("        -Statement");
            this.showTrigger(nombreTabla, arch);
            trig.showTrigger(nombreTabla, arch);
        }
        else System.out.println("     ** Los Triggres: '"+this.nombre+"'  son iguales.");
    }

}
